package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * 对象流
 * java.io.ObjectInputStream和ObjectOutputStream
 * 对象流是一对高级流，作用是进行对象的序列化与反序列化
 *
 * 对象序列化:将一个java对象转换为一组字节的过程称为对象序列化
 *
 */
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        //将一个Person对象序列化后写入文件person.obj中
        String name = "刘桑";
        int age = 55;
        String gender = "男";
        String[] otherInfo = {"是一名老师","技术好","拍片儿也好","大家的启蒙老师"};

        Person p = new Person(name,gender,age,otherInfo);
        System.out.println(p);

        FileOutputStream fos = new FileOutputStream("person.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        /*
            对象输出流在序列化对象时可能引发异常:
            java.io.NotSerializableException: io.Person
            原因:当序列化的对象没有实现接口:java.io.Serializable时出现上述异常
         */
        oos.writeObject(p);
        System.out.println("写出完毕!");
        oos.close();
    }
}







